今天找JS的json函数,发现一段代码:
|
|
详细的代码可以见这里
应该是很老的代码了,但是真是搞不清这里的含义
/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/
中间 Eaeflnr-u 这一段的意思是?为什么要这样去判断是否是json的格式呢?
好奇没有想明白,但是用这一段来判断确实是错误的,比如输入’{“key”:Math.PI}’时候这里会parse不到正确的json。
douglascrockford 后面改进的JSON.js以及JSON2.js都是对此parse失败的,同样json.org官方提供的两个javascript的json库里clarinet.js也是parse失败的。。。(但,stringfy({“key”:Math.PI})是正确)
难道这个json不应该是被parse正确的吗?
附上CrockFord 改进的版本,作者改进了对应的正则表达式,使用这样的正则表达式的初衷在注释里面可以看到一些,呵呵。
|
|